import whisper
from config.models import WHISPER_CONFIG
from config.paths import PathConfig

class WhisperEngine:
    def __init__(self):
        # 初始化模型对象为None，实现延迟加载
        self.model = None

    def load_model(self):
        """懒加载模型节省内存"""
        # 如果模型尚未加载，则调用whisper.load_model进行加载
        if not self.model:
            self.model = whisper.load_model(
                name=WHISPER_CONFIG["model_size"],  # 从配置中获取模型大小
                device=WHISPER_CONFIG["device"],    # 指定设备（如CPU/GPU）
                download_root=PathConfig.MODEL_CACHE  # 设置模型缓存路径
            )

    def transcribe_file(self, audio_path: str):
        """执行语音转写"""
        # 确保模型已加载
        self.load_model()
        # 使用模型对音频文件进行语音识别
        result = self.model.transcribe(
            audio_path,  # 音频文件路径
            language=WHISPER_CONFIG["language"],  # 指定识别语言
            fp16=(WHISPER_CONFIG["compute_type"] == "float16")  # 是否使用半精度浮点数计算
        )
        return result